REQUIRES: x86_64-linux

Since the profile contains virtual addresses for the callstack,
we do not expect the raw binary profile to be deterministic. The
summary should be deterministic apart from changes to the shared
libraries linked in which could change the number of segments
recorded.

To update the inputs used below run Inputs/update_memprof_inputs.sh /path/to/updated/clang
RUN: llvm-profdata show --memory %p/Inputs/pic.memprofraw --profiled-binary %p/Inputs/pic.memprofexe -o - 2>&1 | FileCheck %s

CHECK:  MemprofProfile:
CHECK-NEXT:   Summary:
CHECK-NEXT:     Version: 3
CHECK-NEXT:     NumSegments: {{[0-9]+}}
CHECK-NEXT:     NumMibInfo: 2
CHECK-NEXT:     NumAllocFunctions: 1
CHECK-NEXT:     NumStackOffsets: 2
CHECK-NEXT:   Segments:
CHECK-NEXT:   -
CHECK-NEXT:     BuildId: {{[[:xdigit:]]+}}
CHECK-NEXT:     Start: 0x{{[[:xdigit:]]+}}
CHECK-NEXT:     End: 0x{{[[:xdigit:]]+}}
CHECK-NEXT:     Offset: 0x{{[[:xdigit:]]+}}
CHECK-NEXT:   -

CHECK:   Records:
CHECK-NEXT:   -
CHECK-NEXT:     FunctionGUID: {{[0-9]+}}
CHECK-NEXT:     AllocSites:
CHECK-NEXT:     -
CHECK-NEXT:       Callstack:
CHECK-NEXT:       -
CHECK-NEXT:         Function: {{[0-9]+}}
CHECK-NEXT:         SymbolName: main
CHECK-NEXT:         LineOffset: 1
CHECK-NEXT:         Column: 21
CHECK-NEXT:         Inline: 0
CHECK-NEXT:       MemInfoBlock:
CHECK-NEXT:         AllocCount: 1
CHECK-NEXT:         TotalAccessCount: 2
CHECK-NEXT:         MinAccessCount: 2
CHECK-NEXT:         MaxAccessCount: 2
CHECK-NEXT:         TotalSize: 10
CHECK-NEXT:         MinSize: 10
CHECK-NEXT:         MaxSize: 10
CHECK-NEXT:         AllocTimestamp: {{[0-9]+}}
CHECK-NEXT:         DeallocTimestamp: {{[0-9]+}}
CHECK-NEXT:         TotalLifetime: 0
CHECK-NEXT:         MinLifetime: 0
CHECK-NEXT:         MaxLifetime: 0
CHECK-NEXT:         AllocCpuId: {{[0-9]+}}
CHECK-NEXT:         DeallocCpuId: {{[0-9]+}}
CHECK-NEXT:         NumMigratedCpu: 0
CHECK-NEXT:         NumLifetimeOverlaps: 0
CHECK-NEXT:         NumSameAllocCpu: 0
CHECK-NEXT:         NumSameDeallocCpu: 0
CHECK-NEXT:         DataTypeId: {{[0-9]+}}
CHECK-NEXT:         TotalAccessDensity: 20
CHECK-NEXT:         MinAccessDensity: 20
CHECK-NEXT:         MaxAccessDensity: 20
CHECK-NEXT:         TotalLifetimeAccessDensity: 20000
CHECK-NEXT:         MinLifetimeAccessDensity: 20000
CHECK-NEXT:         MaxLifetimeAccessDensity: 20000
CHECK-NEXT:     -
CHECK-NEXT:       Callstack:
CHECK-NEXT:       -
CHECK-NEXT:         Function: {{[0-9]+}}
CHECK-NEXT:         SymbolName: main
CHECK-NEXT:         LineOffset: 4
CHECK-NEXT:         Column: 15
CHECK-NEXT:         Inline: 0
CHECK-NEXT:       MemInfoBlock:
CHECK-NEXT:         AllocCount: 1
CHECK-NEXT:         TotalAccessCount: 2
CHECK-NEXT:         MinAccessCount: 2
CHECK-NEXT:         MaxAccessCount: 2
CHECK-NEXT:         TotalSize: 10
CHECK-NEXT:         MinSize: 10
CHECK-NEXT:         MaxSize: 10
CHECK-NEXT:         AllocTimestamp: {{[0-9]+}}
CHECK-NEXT:         DeallocTimestamp: {{[0-9]+}}
CHECK-NEXT:         TotalLifetime: 0
CHECK-NEXT:         MinLifetime: 0
CHECK-NEXT:         MaxLifetime: 0
CHECK-NEXT:         AllocCpuId: {{[0-9]+}}
CHECK-NEXT:         DeallocCpuId: {{[0-9]+}}
CHECK-NEXT:         NumMigratedCpu: 0
CHECK-NEXT:         NumLifetimeOverlaps: 0
CHECK-NEXT:         NumSameAllocCpu: 0
CHECK-NEXT:         NumSameDeallocCpu: 0
CHECK-NEXT:         DataTypeId: {{[0-9]+}}
CHECK-NEXT:         TotalAccessDensity: 20
CHECK-NEXT:         MinAccessDensity: 20
CHECK-NEXT:         MaxAccessDensity: 20
CHECK-NEXT:         TotalLifetimeAccessDensity: 20000
CHECK-NEXT:         MinLifetimeAccessDensity: 20000
CHECK-NEXT:         MaxLifetimeAccessDensity: 20000
